package cn.springboot.linked;
/**
 * @author liufl E-mail:Huberier@allpyra.com
 * @version 创建时间：2017年9月27日 下午4:22:57
 * 类说明
 */
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 下载工具类
 * @author wrm
 *
 */
public class DownLoadTool {
	
	static Logger log = LoggerFactory.getLogger(DownLoadTool.class);

    /**
     * 自动生成保存的目录
     * 目录名的命名规范：yyyyMMddHHmmss
     */
    public static File createSaveDirectory(){
        DateFormat df=new SimpleDateFormat("yyyyMMddHHmmss");
        String directoryName=df.format(new Date());
        return createSaveDirectory(directoryName);
    }

    /**
     * 根据指定目录名
     * @param directoryName
     * @return
     */
    public static File createSaveDirectory(String directoryName) {
        File file=new File(directoryName);
        if(!file.exists()){
            file.mkdirs();
        }
        return file;
    }
        /**
         * 下载页面的内容
         */
        static String downLoadUrl(String addr){
            StringBuffer sb=new StringBuffer();
            try {
                URL url=new URL(addr);
                HttpURLConnection con=(HttpURLConnection) url.openConnection();

                con.setConnectTimeout(5000);
                con.connect();
                //产生文件名
                Random r=new Random();
                try {
                    Thread.sleep(r.nextInt(2000));//防止被网站识别出是爬虫在访问而进行的睡眠操作 
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                System.out.println(con.getResponseCode());
                System.out.println(con.getHeaderFields());
                if(con.getResponseCode()==200){
                    BufferedInputStream bis=new BufferedInputStream(con.getInputStream());//判断访问该网页获得的状态码是否为200（成功）
                    Scanner sc=new Scanner(bis,"UTF-8");
                        while(sc.hasNextLine()){    //读取拼接页面信息
                        	sb.append(sc.nextLine());
                    }
                }else{
//                	con.getHeaderField(name);   //获得头中的name数据
                	Map<String, List<String>> map =con.getHeaderFields();      //获得头中的所有数据
                	for (Map.Entry<String, List<String>> entry : map.entrySet()) {
                		List<String> list = entry.getValue();
                		for (int i = 0; i < list.size(); i++) {
							log.info("header:{}>>>>>>>>>>>,value:{}",entry.getKey(),list.get(i));
						}
					}
                }
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return sb.toString();
        }
}

